home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
BARNET
/
FREENET
/
BRODIE
/
BETA
/
DNSRESOL.ARC
/
Programmer
/
Veneer
/
h
/
DNSResolve
Wrap
Text File
|
1997-04-09
|
22KB
|
646 lines
#ifndef dnsresolver_H
#define dnsresolver_H
/* C header file for DNSResolver
* written by DefMod (Sep 22 1995) on Wed Apr 9 11:57:02 1997
* Stewart Brodie
*/
#ifndef types_H
#include "types.h"
#endif
/**********************************
* SWI names and SWI reason codes *
**********************************/
#undef DNSResolver_GetHostByName
#define DNSResolver_GetHostByName 0x46000
#undef XDNSResolver_GetHostByName
#define XDNSResolver_GetHostByName 0x66000
#undef DNSResolver_GetHostByAddr
#define DNSResolver_GetHostByAddr 0x46001
#undef XDNSResolver_GetHostByAddr
#define XDNSResolver_GetHostByAddr 0x66001
#undef DNSResolver_GetCache
#define DNSResolver_GetCache 0x46002
#undef XDNSResolver_GetCache
#define XDNSResolver_GetCache 0x66002
#undef DNSResolver_CacheControl
#define DNSResolver_CacheControl 0x46003
#undef XDNSResolver_CacheControl
#define XDNSResolver_CacheControl 0x66003
#undef DNSResolver_Start
#define DNSResolver_Start 0x46010
#undef XDNSResolver_Start
#define XDNSResolver_Start 0x66010
#undef DNSResolver_Check
#define DNSResolver_Check 0x46011
#undef XDNSResolver_Check
#define XDNSResolver_Check 0x66011
#undef DNSResolver_Dispose
#define DNSResolver_Dispose 0x46012
#undef XDNSResolver_Dispose
#define XDNSResolver_Dispose 0x66012
#undef DNSResolver_GetAnswer
#define DNSResolver_GetAnswer 0x46013
#undef XDNSResolver_GetAnswer
#define XDNSResolver_GetAnswer 0x66013
#undef DNSResolver_GetAnswerRaw
#define DNSResolver_GetAnswerRaw 0x46014
#undef XDNSResolver_GetAnswerRaw
#define XDNSResolver_GetAnswerRaw 0x66014
#undef DNSResolver_GetMXQueryAnswer
#define DNSResolver_GetMXQueryAnswer 0x46015
#undef XDNSResolver_GetMXQueryAnswer
#define XDNSResolver_GetMXQueryAnswer 0x66015
#undef DNSResolver_GetNSQueryAnswer
#define DNSResolver_GetNSQueryAnswer 0x46016
#undef XDNSResolver_GetNSQueryAnswer
#define XDNSResolver_GetNSQueryAnswer 0x66016
#undef DNSResolver_GetSOAQueryAnswer
#define DNSResolver_GetSOAQueryAnswer 0x46017
#undef XDNSResolver_GetSOAQueryAnswer
#define XDNSResolver_GetSOAQueryAnswer 0x66017
#undef DNSResolver_MTGetHostByName
#define DNSResolver_MTGetHostByName 0x46018
#undef XDNSResolver_MTGetHostByName
#define XDNSResolver_MTGetHostByName 0x66018
#undef DNSResolver_MTGetHostByAddr
#define DNSResolver_MTGetHostByAddr 0x46019
#undef XDNSResolver_MTGetHostByAddr
#define XDNSResolver_MTGetHostByAddr 0x66019
#undef DNSResolver_ResStatus
#define DNSResolver_ResStatus 0x4601A
#undef XDNSResolver_ResStatus
#define XDNSResolver_ResStatus 0x6601A
#undef DNSResolver_ResDebug
#define DNSResolver_ResDebug 0x4601B
#undef XDNSResolver_ResDebug
#define XDNSResolver_ResDebug 0x6601B
#undef DNSResolver_ResUseVC
#define DNSResolver_ResUseVC 0x4601C
#undef XDNSResolver_ResUseVC
#define XDNSResolver_ResUseVC 0x6601C
#undef DNSResolver_Version
#define DNSResolver_Version 0x4601D
#undef XDNSResolver_Version
#define XDNSResolver_Version 0x6601D
#undef DNSResolver_ShowAnswer
#define DNSResolver_ShowAnswer 0x4601E
#undef XDNSResolver_ShowAnswer
#define XDNSResolver_ShowAnswer 0x6601E
#undef DNSResolver_DnComp
#define DNSResolver_DnComp 0x4601F
#undef XDNSResolver_DnComp
#define XDNSResolver_DnComp 0x6601F
#undef DNSResolver_DnExpand
#define DNSResolver_DnExpand 0x46020
#undef XDNSResolver_DnExpand
#define XDNSResolver_DnExpand 0x66020
#undef DNSResolver_GetHostName
#define DNSResolver_GetHostName 0x46021
#undef XDNSResolver_GetHostName
#define XDNSResolver_GetHostName 0x66021
#undef DNSResolver_ResQuery
#define DNSResolver_ResQuery 0x46022
#undef XDNSResolver_ResQuery
#define XDNSResolver_ResQuery 0x66022
#undef DNSResolver_NameServers
#define DNSResolver_NameServers 0x46023
#undef XDNSResolver_NameServers
#define XDNSResolver_NameServers 0x66023
#undef DNSResolver_CacheFlush
#define DNSResolver_CacheFlush 0x46024
#undef XDNSResolver_CacheFlush
#define XDNSResolver_CacheFlush 0x66024
#undef DNSResolver_GetError
#define DNSResolver_GetError 0x46025
#undef XDNSResolver_GetError
#define XDNSResolver_GetError 0x66025
/************************
* Constant definitions *
************************/
#define error_DNS_RESOLVER__UNKNOWN_SWI 0x802D20u
/*************************
* Function declarations *
*************************/
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_host_by_name()
*
* Description: Looks up the host information as for gethostbyname(3)
*
* Input: hostname - value of R1 on entry
*
* Output: host - pointer to static hostent structure (X version only)
*
* Returns: R1 (non-X version only)
*
* Other notes: Calls SWI 0x46000 with R0 = 0x0.
*/
extern os_error *xdnsresolver_get_host_by_name (char const *hostname,
hostent **host);
extern hostent *dnsresolver_get_host_by_name (char const *hostname);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_host_by_addr()
*
* Description: Looks up the host information as for gethostbyaddr(3)
*
* Input: address - Pointer to host IP address
* address_size - should be sizeof(struct in_addr) = 4
* address_type - should be AF_INET (2)
*
* Output: host - pointer to static hostent structure (X version only)
*
* Returns: R1 (non-X version only)
*
* Other notes: Calls SWI 0x46001 with R0 = 0x0.
*/
extern os_error *xdnsresolver_get_host_by_addr (byte const *address,
int address_size,
int address_type,
hostent **host);
extern hostent *dnsresolver_get_host_by_addr (byte const *address,
int address_size,
int address_type);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_cache()
*
* Description: Reserved for ANT Limited. Not implemented in DNSResolver
*
* Other notes: Calls SWI 0x46002.
*/
extern os_error *xdnsresolver_get_cache (void);
__swi (0x46002) void dnsresolver_get_cache (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_cache_control()
*
* Description: Reserved for ANT Limited. Not implemented in DNSResolver
*
* Other notes: Calls SWI 0x46003.
*/
extern os_error *xdnsresolver_cache_control (void);
__swi (0x46003) void dnsresolver_cache_control (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_start()
*
* Description: Starts a multitasking DNS query
*
* Input: address - Pointer to entity to lookup
* address_class - should be C_IN (1)
* lookup_type - as found in arpa/nameser.h
*
* Output: query - DNS query handle (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46010.
*/
extern os_error *xdnsresolver_start (char const *address,
int address_class,
int lookup_type,
dnsquery **query);
__swi (0x46010) dnsquery *dnsresolver_start (char const *address,
int address_class,
int lookup_type);
/* ------------------------------------------------------------------------
* Function: dnsresolver_check()
*
* Description: Checks the progress of a multitasking DNS query
*
* Input: query - DNS query handle
*
* Output: status - value of R0 on exit (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46011.
*/
extern os_error *xdnsresolver_check (dnsquery *query,
dns_status *status);
__swi (0x46011) dns_status dnsresolver_check (dnsquery *query);
/* ------------------------------------------------------------------------
* Function: dnsresolver_dispose()
*
* Description: Terminates & disposes of a multitasking DNS query
*
* Input: query - handle
*
* Other notes: Calls SWI 0x46012.
*/
extern os_error *xdnsresolver_dispose (dnsquery *query);
__swi (0x46012) void dnsresolver_dispose (dnsquery *query);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_answer()
*
* Description: Retrieves the DNS answer as a hostent structure if
* available
*
* Input: query - DNS query handle
*
* Output: host - pointer to static hostent structure (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46013.
*/
extern os_error *xdnsresolver_get_answer (dnsquery *query,
hostent **host);
__swi (0x46013) hostent *dnsresolver_get_answer (dnsquery *query);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_answer_raw()
*
* Description: Retrieves the complete unparsed DNS answer if available
*
* Input: query - DNS query handle
*
* Output: result - Opaque DNS response packet (X version only)
* resplen - value of R1 on exit
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46014.
*/
extern os_error *xdnsresolver_get_answer_raw (dnsquery *query,
byte **result,
int *resplen);
extern byte *dnsresolver_get_answer_raw (dnsquery *query,
int *resplen);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_mx_query_answer()
*
* Description: Retrieves the DNS answer as a dnsquery_mx structure if
* available
*
* Input: query - DNS MX query handle
*
* Output: host - pointer to static dnsquery_mx structure (X version only)
* mxcount - number of entries in array
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46015.
*/
extern os_error *xdnsresolver_get_mx_query_answer (dnsquery *query,
dnsquery_mx **host,
int *mxcount);
extern dnsquery_mx *dnsresolver_get_mx_query_answer (dnsquery *query,
int *mxcount);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_ns_query_answer()
*
* Description: Retrieves the DNS answer as a dnsquery_ns structure if
* available
*
* Input: query - DNS NS query handle
*
* Output: host - pointer to static dnsquery_ns structure (X version only)
* nscount - number of entries in array
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46016.
*/
extern os_error *xdnsresolver_get_ns_query_answer (dnsquery *query,
dnsquery_ns **host,
int *nscount);
extern dnsquery_ns *dnsresolver_get_ns_query_answer (dnsquery *query,
int *nscount);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_soa_query_answer()
*
* Description: Retrieves the DNS answer as a dnsquery_soa structure if
* available
*
* Input: query - DNS SOA query handle
*
* Output: host - pointer to static dnsquery_soa structure (X version only)
* soacount - number of entries in array
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46017.
*/
extern os_error *xdnsresolver_get_soa_query_answer (dnsquery *query,
dnsquery_soa **host,
int *soacount);
extern dnsquery_soa *dnsresolver_get_soa_query_answer (dnsquery *query,
int *soacount);
/* ------------------------------------------------------------------------
* Function: dnsresolver_mt_get_host_by_name()
*
* Description: Starts a multitasking gethostbyname() query. Equivalent
* to dnsresolver_start_query(hostname, C_IN, T_A)
*
* Input: hostname - value of R0 on entry
*
* Output: query - DNS query handle (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46018.
*/
extern os_error *xdnsresolver_mt_get_host_by_name (char const *hostname,
dnsquery **query);
__swi (0x46018) dnsquery *dnsresolver_mt_get_host_by_name (char const *hostname);
/* ------------------------------------------------------------------------
* Function: dnsresolver_mt_get_host_by_addr()
*
* Description: Starts a multitasking gethostbyaddr() query. Equivalent
* to dnsresolver_start_query(<<address>>.in-addr.arpa,
* C_IN, T_PTR)
*
* Input: address - Pointer to host IP address
* address_size - should be sizeof(struct in_addr) = 4
* address_type - should be AF_INET (2)
*
* Output: query - DNS query handle (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46019.
*/
extern os_error *xdnsresolver_mt_get_host_by_addr (byte const *address,
int address_size,
int address_type,
dnsquery **query);
__swi (0x46019) dnsquery *dnsresolver_mt_get_host_by_addr (byte const *address,
int address_size,
int address_type);
/* ------------------------------------------------------------------------
* Function: dnsresolver_res_status()
*
* Description: Prints the current options status
*
* Other notes: Calls SWI 0x4601A.
*/
extern os_error *xdnsresolver_res_status (void);
__swi (0x4601A) void dnsresolver_res_status (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_res_debug()
*
* Description: Toggles the debug state of the resolver
*
* Other notes: Calls SWI 0x4601B.
*/
extern os_error *xdnsresolver_res_debug (void);
__swi (0x4601B) void dnsresolver_res_debug (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_res_use_vc()
*
* Description: Toggles the Virtual Circuit flag in the resolver
*
* Other notes: Calls SWI 0x4601C.
*/
extern os_error *xdnsresolver_res_use_vc (void);
__swi (0x4601C) void dnsresolver_res_use_vc (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_version()
*
* Description: Returns the BIND version upon which the resolver is based
*
* Output: version - BCD encoded version number (currently 04090500) (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x4601D.
*/
extern os_error *xdnsresolver_version (int *version);
__swi (0x4601D) int dnsresolver_version (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_show_answer()
*
* Description: Decodes a DNS response into a text buffer
*
* Input: response - DNS response
* buffer - Buffer to hold results
* size - Buffer size on entry, amount left free on exit
* anslen - Length of DNS response
*
* Output: status - -1 for failure, 0 for success (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x4601E.
*/
extern os_error *xdnsresolver_show_answer (byte const *response,
char *buffer,
int *size,
int anslen,
int *status);
__swi (0x4601E) int dnsresolver_show_answer (byte const *response,
char *buffer,
int *size,
int anslen);
/* ------------------------------------------------------------------------
* Function: dnsresolver_dn_comp()
*
* Description: Compresses a domain name into a buffer
*
* Input: exp_dn - expanded domain name
* comp_dn - buffer for compressed domain name
* dn_ptrs - list of pointers to previously compressed names
* lastdnptr - pointer to last entry in dn_ptrs
* length - size of comp_dn buffer
*
* Output: status - -1 for failure, size of *compressed* name otherwise (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x4601F.
*/
extern os_error *xdnsresolver_dn_comp (char const *exp_dn,
char *comp_dn,
char **dn_ptrs,
char **lastdnptr,
int length,
int *status);
extern int dnsresolver_dn_comp (char const *exp_dn,
char *comp_dn,
char **dn_ptrs,
char **lastdnptr,
int length);
/* ------------------------------------------------------------------------
* Function: dnsresolver_dn_expand()
*
* Description: Expands a compressed domain name into a buffer
*
* Input: msg - pointer to beginning of DNS buffer
* eomsg - pointer to first location after msg
* comp_dn - compressed domain name
* exp_dn - buffer for expanded domain name
* length - size of exp_dn buffer
*
* Output: status - -1 for failure, size of *compressed* (yes!) name otherwise (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46020.
*/
extern os_error *xdnsresolver_dn_expand (char const *msg,
char const *eomsg,
char const *comp_dn,
char *exp_dn,
int length,
int *status);
extern int dnsresolver_dn_expand (char const *msg,
char const *eomsg,
char const *comp_dn,
char *exp_dn,
int length);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_host_name()
*
* Description: Finds out the primary hostname of the machine
*
* Input: buffer - to hold the hostname on exit
* size - of the buffer in R0
*
* Output: status - -1 for failure, 0 for success (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46021.
*/
extern os_error *xdnsresolver_get_host_name (char *buffer,
int size,
int *status);
__swi (0x46021) int dnsresolver_get_host_name (char *buffer,
int size);
/* ------------------------------------------------------------------------
* Function: dnsresolver_res_query()
*
* Description: Perform a complete DNS query. Interface as for
* res_query()
*
* Input: address - Pointer to entity to lookup
* address_class - as for SWI DNSResolver_StartQuery
* lookup_type - as for SWI DNSResolver_StartQuery
* ansbuf - buffer for answer
* size - size of the ansbuf buffer
*
* Output: length - Size of the response (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46022.
*/
extern os_error *xdnsresolver_res_query (char const *address,
int address_class,
int lookup_type,
char *ansbuf,
int size,
int *length);
extern int dnsresolver_res_query (char const *address,
int address_class,
int lookup_type,
char *ansbuf,
int size);
/* ------------------------------------------------------------------------
* Function: dnsresolver_name_servers()
*
* Description: Find out what nameservers are currently being used. This
* information should be treated as READ-ONLY, although you
* could (if careful) change these if you know what you are
* doing
*
* Output: size - Number of entries in the array of structures (X version only)
* ns_address_list - Address of first address structure
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46023.
*/
extern os_error *xdnsresolver_name_servers (int *size,
sockaddr_in **ns_address_list);
extern int dnsresolver_name_servers (sockaddr_in **ns_address_list);
/* ------------------------------------------------------------------------
* Function: dnsresolver_cache_flush()
*
* Description: Flush everything from the DNS resolver cache
*
* Other notes: Calls SWI 0x46024.
*/
extern os_error *xdnsresolver_cache_flush (void);
__swi (0x46024) void dnsresolver_cache_flush (void);
/* ------------------------------------------------------------------------
* Function: dnsresolver_get_error()
*
* Description: Retrieve the DNS error status of a lookup. For details of
* these codes, see <arpa/nameser.h>
*
* Input: query - DNS query handle
*
* Output: err - Error code associated with the lookup (X version only)
*
* Returns: R0 (non-X version only)
*
* Other notes: Calls SWI 0x46025.
*/
extern os_error *xdnsresolver_get_error (dnsquery *query,
int *err);
__swi (0x46025) int dnsresolver_get_error (dnsquery *query);
#ifdef __cplusplus
}
#endif
#endif